  // 事件队列
  const eventQueue = {};
  
  module.exports = {
    // 监听
    on: (name, callback) => {
      if (!eventQueue[name]) {
        eventQueue[name] = [];
      }
  
      eventQueue[name].push(callback)
    },
  
    // 触发
    emit: (name, ...args) => {
      (eventQueue[name] || []).forEach((callback) => {
        // 触发事件
        callback(...args);
      })
    },
  
    // 移除
    remove: (name, callback = false) => {
      if (!eventQueue[name]) return;
      // 清除所有事件
      if (arguments.length === 1) eventQueue[name] = [];
      // 过滤掉需要删除的事件
      eventQueue[name] = (eventQueue[name] || []).filter((cb) => {
        return cb !== callback;
      })
    }
  }